import { createResolver, defineNuxtModule } from '@nuxt/kit'

const I18nLocale = [
    {
        name: '简体中文',
        // 使用 SEO 功能时必需）- 用于 SEO 功能以及使用功能时匹配浏览器区域设置的语言范围。
        iso: 'zh-Hans',
        code: 'zh-cn',
        file: 'zh-cn.json'
    },
    {
        name: 'English(US)',
        // 使用 SEO 功能时必需）- 用于 SEO 功能以及使用功能时匹配浏览器区域设置的语言范围。
        iso: 'en-US',
        code: 'en',
        file: 'en.json'
    }
]

export default defineNuxtModule({
    setup(options, nuxt) {
        const { resolve } = createResolver(import.meta.url)

        nuxt.hook('i18n:registerModule', register => {
            register({
                // 翻译是否应该延迟加载。如果启用此功能，则必须配置该langDir选项，并且区域设置必须是对象数组，每个对象都包含file或files键。
                // 延迟加载区域设置消息意味着仅在页面加载时加载当前使用的区域设置（以及后备区域设置，如果与当前区域设置不同）的消息。
                lazy: true,
                // 包含要加载的翻译文件的目录的相对路径。
                langDir: './locale',
                // 默认语言
                defaultLocale: 'zh-cn',
                // 您的应用程序支持的区域设置列表。
                locales: I18nLocale,
                // https://i18n.nuxtjs.org/options/browser#detectbrowserlanguage
                detectBrowserLanguage: {
                    // 如果启用，一旦用户被重定向到浏览器的首选区域设置，就会设置 cookie，以防止后续重定向。设置为false每次都重定向。
                    useCookie: true,
                    // cookie名称
                    cookieKey: 'language',
                    // 设置为始终重定向到 cookie 中存储的值，而不仅仅是在第一次访问时。
                    // alwaysRedirect: true,
                    // 如果没有任何区域设置与浏览器的区域设置相匹配，请使用此区域设置作为后备。
                    // fallbackLocale: 'zh-cn'
                }
            })
        })
    }
})